Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Опрацювання структур.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Електронні обчислювальні машини

Інформація про роботу

Рік:
2004
Тип роботи:
Лабораторна робота
Предмет:
Засоби системного програмування
Група:
КI

Частина тексту файла

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 7 з курсу „ Засоби системного програмування ” Тема: Опрацювання структур. Виконав: студент групи КІ-2 Львів – 2004 Мета роботи: Закріпити теоретичні знання та оволодіти практичними навиками опрацювання структур даних. Засвоїти техніку створення та опрацювання складних типів даних. Завдання на лабораторну роботу Розробити програмне забезпечення для опрацювання структур відповідно до заданого варіанту. Для внутрішнього представлення даних, що опрацьовуються, розробити відповідні структури даних. Під зберігання символьних рядків виділяти тільки мінімальний об’єм пам’яті. Прямокутники (у межах даних задач) однозначно представляються координатами верхнього лівого та нижнього правого кутів. Кількість записів передавати програмі через аргументи функції main(). Дані вводити зі стандартного пристрою вводу а результати виводити на стандартний пристрій виводу. Забезпечити коректне звільнення динамічно виділеної пам’яті при завершенні використання даних під які вона виділена. Звернути особливу увагу на обробку помилок, які користувач може зробити при використанні програми. При вирішенні задач забезпечити дружній інтерфейс з користувачем. Варіант 23. Ввести довільне число іменованих прямокутників. Вибрати із введених прямокутників тільки ті, що не перетинаються та вивести результати. Аналіз завдання та опис алгоритму вирішення задачі Прямокутники зберігаємо в масиві змінних типу структура, яка складається з полів: назва прямокутника, координати лівого верхнього та правого нижнього кутів x1, y1, x2, y2, та поле признаку перетину прямокутника з будь-яким іншим. На початку програми виділяється пам’ять під масив прямокутників, відповідно до їх кількості. Кількість прямокутників передаємо програмі через аргументи функції main(). int argc (кількіть аргументів) ; char *argv[] – самі аргументи. При перегляді прямокутників ми відмічаємо, чи прямокутник перетинається з іншим і виводимо на стандартний пристрій прямокутники, які ні з чим не перетнулися, з їх координатами. Текст програми #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <ctype.h> typedef struct {char *s; int x1,y1,x2,y2; unsigned char no_cross;} rect; void Err (int e) { if (e==0) puts("ERROR: Wrong argument count!"); else if (e==1) puts("ERROR: Wrong argument!"); puts("SYNTAX: <prog_name> <number of rectangles(unsigned_int)>"); getchar(); exit(0); } void main (int argc,char *argv[]) { int i, j, n; rect *p; clrscr(); if (argc==2) { if (!isdigit(argv[1][0])||argv[1][0]=='-') Err(1); n=atoi(argv[1]); } else Err(0); puts("(x1;y1) ╔─────┐\t\tRules: x1 < x2" "\n │ │\t\t y1 > y2" "\n └─────╝ (x2;y2)"); printf("Quantity of rectangles : %d\n",n); p=malloc( n*sizeof(rect) ); for (i=0;i<n;i++) p[i].s=(char*)malloc(40*sizeof(char)); for (i=0;i<n;i++) { printf("Enter name of rectangle # %d : ",i+1); scanf("%s",p[i].s); p[i].s=(char*)realloc(p[i].s,strlen(p[i].s)+1); do{ printf(" Enter x1 : "); scanf("%d",&p[i].x1); printf(" Enter y1 : "); scanf("%d",&p[i].y1); printf(" Enter x2 : "); scanf("%d",&p[i].x2); printf(" Enter y2 : "); scanf("%d",&p[i].y2); } while (p[i].x1>=p[i].x2 || p[i].y1<=p[i].y2); p[i].no_cross=1; } for (i=0;i<n-1;i++) { for (j=i+1;j<n;j++) if (p[j].x1>p[i].x2||p[j].x2<p[i].x1||p[j].y1<p[i].y2||p[j].y2>p[i].y1); else {p[i].no_cross=0; p[j].no_cross=0; } } j=0; puts("Non-crossing rectangles :"); for (i=0;i<n;i++) { if (p[i].no_cross==1) { printf("%s (%d,%d) (%d,%d)\n",p[i].s,p[i].x1,p[i].y1,p[i].x2,p[i].y2); j++; } } if (j == 0) puts(" <none> "); for (i=0;i<n;i++) free(&p[i].s); free(p); g...
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини